﻿using System;

#pragma warning disable 1591

namespace DebuggerEngine.Interop {
	public enum SymTag : uint {
		Null,
		Exe,
		Compiland,
		CompilandDetails,
		CompilandEnv,
		Function,
		Block,
		Data,
		Annotation,
		Label,
		PublicSymbol,
		UDT,
		Enum,
		FunctionType,
		PointerType,
		ArrayType,
		BaseType,
		Typedef,
		BaseClass,
		Friend,
		FunctionArgType,
		FuncDebugStart,
		FuncDebugEnd,
		UsingNamespace,
		VTableShape,
		VTable,
		Custom,
		Thunk,
		CustomType,
		ManagedType,
		Dimension,
	}

	public enum DEBUG_REQUEST : uint {
		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Unused.
		/// </summary>
		SOURCE_PATH_HAS_SOURCE_SERVER = 0,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Machine-specific CONTEXT.
		/// </summary>
		TARGET_EXCEPTION_CONTEXT = 1,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - ULONG system ID of thread.
		/// </summary>
		TARGET_EXCEPTION_THREAD = 2,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - EXCEPTION_RECORD64.
		/// </summary>
		TARGET_EXCEPTION_RECORD = 3,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - DEBUG_CREATE_PROCESS_OPTIONS.
		/// </summary>
		GET_ADDITIONAL_CREATE_OPTIONS = 4,

		/// <summary>
		///     InBuffer - DEBUG_CREATE_PROCESS_OPTIONS.
		///     OutBuffer - Unused.
		/// </summary>
		SET_ADDITIONAL_CREATE_OPTIONS = 5,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - ULONG[2] major/minor.
		/// </summary>
		GET_WIN32_MAJOR_MINOR_VERSIONS = 6,

		/// <summary>
		///     InBuffer - DEBUG_READ_USER_MINIDUMP_STREAM.
		///     OutBuffer - Unused.
		/// </summary>
		READ_USER_MINIDUMP_STREAM = 7,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Unused.
		/// </summary>
		TARGET_CAN_DETACH = 8,

		/// <summary>
		///     InBuffer - PTSTR.
		///     OutBuffer - Unused.
		/// </summary>
		SET_LOCAL_IMPLICIT_COMMAND_LINE = 9,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Event code stream offset.
		/// </summary>
		GET_CAPTURED_EVENT_CODE_OFFSET = 10,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Event code stream information.
		/// </summary>
		READ_CAPTURED_EVENT_CODE_STREAM = 11,

		/// <summary>
		///     InBuffer - Input data block.
		///     OutBuffer - Processed data block.
		/// </summary>
		EXT_TYPED_DATA_ANSI = 12,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Returned path.
		/// </summary>
		GET_EXTENSION_SEARCH_PATH_WIDE = 13,

		/// <summary>
		///     InBuffer - DEBUG_GET_TEXT_COMPLETIONS_IN.
		///     OutBuffer - DEBUG_GET_TEXT_COMPLETIONS_OUT.
		/// </summary>
		GET_TEXT_COMPLETIONS_WIDE = 14,

		/// <summary>
		///     InBuffer - ULONG64 cookie.
		///     OutBuffer - DEBUG_CACHED_SYMBOL_INFO.
		/// </summary>
		GET_CACHED_SYMBOL_INFO = 15,

		/// <summary>
		///     InBuffer - DEBUG_CACHED_SYMBOL_INFO.
		///     OutBuffer - ULONG64 cookie.
		/// </summary>
		ADD_CACHED_SYMBOL_INFO = 16,

		/// <summary>
		///     InBuffer - ULONG64 cookie.
		///     OutBuffer - Unused.
		/// </summary>
		REMOVE_CACHED_SYMBOL_INFO = 17,

		/// <summary>
		///     InBuffer - DEBUG_GET_TEXT_COMPLETIONS_IN.
		///     OutBuffer - DEBUG_GET_TEXT_COMPLETIONS_OUT.
		/// </summary>
		GET_TEXT_COMPLETIONS_ANSI = 18,

		/// <summary>
		///     InBuffer - Unused.
		///     OutBuffer - Unused.
		/// </summary>
		CURRENT_OUTPUT_CALLBACKS_ARE_DML_AWARE = 19,

		/// <summary>
		///     InBuffer - ULONG64 offset.
		///     OutBuffer - Unwind information.
		/// </summary>
		GET_OFFSET_UNWIND_INFORMATION = 20,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - returned DUMP_HEADER32/DUMP_HEADER64 structure.
		/// </summary>
		GET_DUMP_HEADER = 21,

		/// <summary>
		///     InBuffer - DUMP_HEADER32/DUMP_HEADER64 structure.
		///     OutBuffer - Unused
		/// </summary>
		SET_DUMP_HEADER = 22,

		/// <summary>
		///     InBuffer - Midori specific
		///     OutBuffer - Midori specific
		/// </summary>
		MIDORI = 23,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - PROCESS_NAME_ENTRY blocks
		/// </summary>
		PROCESS_DESCRIPTORS = 24,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - MINIDUMP_MISC_INFO_N blocks
		/// </summary>
		MISC_INFORMATION = 25,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - ULONG64 as TokenHandle value
		/// </summary>
		OPEN_PROCESS_TOKEN = 26,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - ULONG64 as TokenHandle value
		/// </summary>
		OPEN_THREAD_TOKEN = 27,

		/// <summary>
		///     InBuffer -  ULONG64 as TokenHandle being duplicated
		///     OutBuffer - ULONG64 as new duplicated TokenHandle
		/// </summary>
		DUPLICATE_TOKEN = 28,

		/// <summary>
		///     InBuffer - a ULONG64 as TokenHandle and a ULONG as NtQueryInformationToken() request code
		///     OutBuffer - NtQueryInformationToken() return
		/// </summary>
		QUERY_INFO_TOKEN = 29,

		/// <summary>
		///     InBuffer - ULONG64 as TokenHandle
		///     OutBuffer - Unused
		/// </summary>
		CLOSE_TOKEN = 30,

		/// <summary>
		///     InBuffer - ULONG64 for process server identification and ULONG as PID
		///     OutBuffer - Unused
		/// </summary>
		WOW_PROCESS = 31,

		/// <summary>
		///     InBuffer - ULONG64 for process server identification and PWSTR as module path
		///     OutBuffer - Unused
		/// </summary>
		WOW_MODULE = 32,

		/// <summary>
		///     InBuffer - Unused
		///     OutBuffer - Unused
		///     return - S_OK if non-invasive user-mode attach, S_FALSE if not (but still live user-mode), E_FAIL otherwise.
		/// </summary>
		LIVE_USER_NON_INVASIVE = 33,

		/// <summary>
		///     InBuffer - TID
		///     OutBuffer - Unused
		///     return - ResumeThreads() return.
		/// </summary>
		RESUME_THREAD = 34,
	}

	public enum DEBUG_SRCFILE : uint {
		SYMBOL_TOKEN = 0,
		SYMBOL_TOKEN_SOURCE_COMMAND_WIDE = 1,
	}

	public enum DEBUG_SYMINFO : uint {
		BREAKPOINT_SOURCE_LINE = 0,
		IMAGEHLP_MODULEW64 = 1,
		GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE = 2,
		GET_MODULE_SYMBOL_NAMES_AND_OFFSETS = 3,
	}

	public enum DEBUG_SYSOBJINFO : uint {
		THREAD_BASIC_INFORMATION = 0,
		THREAD_NAME_WIDE = 1,
		CURRENT_PROCESS_COOKIE = 2,
	}

	[Flags]
	public enum DEBUG_TBINFO : uint {
		NONE = 0,
		EXIT_STATUS = 1,
		PRIORITY_CLASS = 2,
		PRIORITY = 4,
		TIMES = 8,
		START_OFFSET = 0x10,
		AFFINITY = 0x20,
		ALL = 0x3f
	}

	[Flags]
	public enum DEBUG_GET_TEXT_COMPLETIONS : uint {
		NONE = 0,
		NO_DOT_COMMANDS = 1,
		NO_EXTENSION_COMMANDS = 2,
		NO_SYMBOLS = 4,
		IS_DOT_COMMAND = 1,
		IS_EXTENSION_COMMAND = 2,
		IS_SYMBOL = 4,
	}

	public enum DEBUG_CLASS : uint {
		UNINITIALIZED = 0,
		KERNEL = 1,
		USER_WINDOWS = 2,
		IMAGE_FILE = 3,
	}

	public enum GET_DEBUGGEE_TYPE2_FLAGS : uint {
		DEFAULT = 0,
		DEBUG_EXEC_FLAGS_NONBLOCK = 1
	}

	public enum DEBUG_CLASS_QUALIFIER : uint {
		KERNEL_CONNECTION = 0,
		KERNEL_LOCAL = 1,
		KERNEL_EXDI_DRIVER = 2,
#if IDNA
        KERNEL_IDNA = 3,
#endif
		KERNEL_SMALL_DUMP = 1024,
		KERNEL_DUMP = 1025,
		KERNEL_FULL_DUMP = 1026,
		USER_WINDOWS_PROCESS = 0,
		USER_WINDOWS_PROCESS_SERVER = 1,
#if IDNA
        USER_WINDOWS_IDNA = 2,
#endif
		USER_WINDOWS_SMALL_DUMP = 1024,
		USER_WINDOWS_DUMP = 1026,
	}

	[Flags]
	public enum DEBUG_ATTACH : uint {
		DEFAULT = 0,
		KERNEL_CONNECTION = 0,
		LOCAL_KERNEL = 1,
		EXDI_DRIVER = 2,

		NONINVASIVE = 1,
		EXISTING = 2,
		NONINVASIVE_NO_SUSPEND = 4,
		INVASIVE_NO_INITIAL_BREAK = 8,
		INVASIVE_RESUME_PROCESS = 0x10,
		NONINVASIVE_ALLOW_PARTIAL = 0x20,
	}

	[Flags]
	public enum DEBUG_GET_PROC : uint {
		DEFAULT = 0,
		FULL_MATCH = 1,
		ONLY_MATCH = 2,
		SERVICE_NAME = 4,
	}

	[Flags]
	public enum DEBUG_PROC_DESC : uint {
		DEFAULT = 0,
		NO_PATHS = 1,
		NO_SERVICES = 2,
		NO_MTS_PACKAGES = 4,
		NO_COMMAND_LINE = 8,
		NO_SESSION_ID = 0x10,
		NO_USER_NAME = 0x20,
	}

	[Flags]
	public enum DEBUG_CREATE_PROCESS : uint {
		DEFAULT = 0,
		NO_DEBUG_HEAP = 0x00000400, /* CREATE_UNICODE_ENVIRONMENT */
		THROUGH_RTL = 0x00010000, /* STACK_SIZE_PARAM_IS_A_RESERVATION */
		DEBUG_PROCESS = 1,
		DEBUG_ONLY_THIS_PROCESS = 2,
	}

	[Flags]
	public enum DEBUG_ECREATE_PROCESS : uint {
		DEFAULT = 0,
		INHERIT_HANDLES = 1,
		USE_VERIFIER_FLAGS = 2,
		USE_IMPLICIT_COMMAND_LINE = 4,
	}

	[Flags]
	public enum DEBUG_PROCESS : uint {
		DEFAULT = 0,
		DETACH_ON_EXIT = 1,
		ONLY_THIS_PROCESS = 2,
	}

	public enum DEBUG_DUMP : uint {
		SMALL = 1024,
		DEFAULT = 1025,
		FULL = 1026,
		IMAGE_FILE = 1027,
		TRACE_LOG = 1028,
		WINDOWS_CD = 1029,
		KERNEL_DUMP = 1025,
		KERNEL_SMALL_DUMP = 1024,
		KERNEL_FULL_DUMP = 1026,
	}

	[Flags]
	public enum DEBUG_CONNECT_SESSION : uint {
		DEFAULT = 0,
		NO_VERSION = 1,
		NO_ANNOUNCE = 2,
	}

	[Flags]
	public enum DEBUG_OUTCTL : uint {
		THIS_CLIENT = 0,
		ALL_CLIENTS = 1,
		ALL_OTHER_CLIENTS = 2,
		IGNORE = 3,
		LOG_ONLY = 4,
		SEND_MASK = 7,
		NOT_LOGGED = 8,
		OVERRIDE_MASK = 0x10,
		DML = 0x20,
		AMBIENT_DML = 0xfffffffe,
		AMBIENT_TEXT = 0xffffffff,
	}

	public enum DEBUG_SERVERS : uint {
		DEBUGGER = 1,
		PROCESS = 2,
		ALL = 3,
	}

	public enum DEBUG_END : uint {
		PASSIVE = 0,
		ACTIVE_TERMINATE = 1,
		ACTIVE_DETACH = 2,
		END_REENTRANT = 3,
		END_DISCONNECT = 4,
	}

	[Flags]
	public enum DEBUG_OUTPUT : uint {
		NONE = 0,
		NORMAL = 1,
		ERROR = 2,
		WARNING = 4,
		VERBOSE = 8,
		PROMPT = 0x10,
		PROMPT_REGISTERS = 0x20,
		EXTENSION_WARNING = 0x40,
		DEBUGGEE = 0x80,
		DEBUGGEE_PROMPT = 0x100,
		SYMBOLS = 0x200,
		STATUS = 0x400,
		KD_PROTOCOL = 0x8000000,
		REMOTING = 0x40000000,
		BREAKPOINT = 0x20000000,
		EVENT = 0x1000000,
		ADDR_TRANSLATE = 0x08000000,
	}

	[Flags]
	public enum DEBUG_EVENT : uint {
		BREAKPOINT = 1,
		EXCEPTION = 2,
		CREATE_THREAD = 4,
		EXIT_THREAD = 8,
		CREATE_PROCESS = 0x10,
		EXIT_PROCESS = 0x20,
		LOAD_MODULE = 0x40,
		UNLOAD_MODULE = 0x80,
		SYSTEM_ERROR = 0x100,
		SESSION_STATUS = 0x200,
		CHANGE_DEBUGGEE_STATE = 0x400,
		CHANGE_ENGINE_STATE = 0x800,
		CHANGE_SYMBOL_STATE = 0x1000,
	}

	public enum DEBUG_SESSION : uint {
		ACTIVE = 0,
		END_SESSION_ACTIVE_TERMINATE = 1,
		END_SESSION_ACTIVE_DETACH = 2,
		END_SESSION_PASSIVE = 3,
		END = 4,
		REBOOT = 5,
		HIBERNATE = 6,
		FAILURE = 7,
	}

	[Flags]
	public enum DEBUG_CDS : uint {
		ALL = 0xffffffff,
		REGISTERS = 1,
		DATA = 2,
		REFRESH = 4,
	}

	[Flags]
	public enum DEBUG_CES : uint {
		ALL = 0xffffffff,
		CURRENT_THREAD = 1,
		EFFECTIVE_PROCESSOR = 2,
		BREAKPOINTS = 4,
		CODE_LEVEL = 8,
		EXECUTION_STATUS = 0x10,
		ENGINE_OPTIONS = 0x20,
		LOG_FILE = 0x40,
		RADIX = 0x80,
		EVENT_FILTERS = 0x100,
		PROCESS_OPTIONS = 0x200,
		EXTENSIONS = 0x400,
		SYSTEMS = 0x800,
		ASSEMBLY_OPTIONS = 0x1000,
		EXPRESSION_SYNTAX = 0x2000,
		TEXT_REPLACEMENTS = 0x4000,
	}

	[Flags]
	public enum DEBUG_CSS : uint {
		ALL = 0xffffffff,
		LOADS = 1,
		UNLOADS = 2,
		SCOPE = 4,
		PATHS = 8,
		SYMBOL_OPTIONS = 0x10,
		TYPE_OPTIONS = 0x20,
	}

	public enum DEBUG_BREAKPOINT_TYPE : uint {
		CODE = 0,
		DATA = 1,
		TIME = 2,
	}

	[Flags]
	public enum DEBUG_BREAKPOINT_FLAG : uint {
		GO_ONLY = 1,
		DEFERRED = 2,
		ENABLED = 4,
		ADDER_ONLY = 8,
		ONE_SHOT = 0x10,
	}

	[Flags]
	public enum DEBUG_BREAKPOINT_ACCESS_TYPE : uint {
		READ = 1,
		WRITE = 2,
		EXECUTE = 4,
		IO = 8,
	}

	[Flags]
	public enum DEBUG_REGISTERS : uint {
		DEFAULT = 0,
		INT32 = 1,
		INT64 = 2,
		FLOAT = 4,
		ALL = 7,
	}

	[Flags]
	public enum DEBUG_REGISTER : uint {
		SUB_REGISTER = 1,
	}

	public enum DEBUG_VALUE_TYPE : uint {
		INVALID = 0,
		INT8 = 1,
		INT16 = 2,
		INT32 = 3,
		INT64 = 4,
		FLOAT32 = 5,
		FLOAT64 = 6,
		FLOAT80 = 7,
		FLOAT82 = 8,
		FLOAT128 = 9,
		VECTOR64 = 10,
		VECTOR128 = 11,
		TYPES = 12,
	}

	public enum INTERFACE_TYPE {
		InterfaceTypeUndefined = -1,
		Internal,
		Isa,
		Eisa,
		MicroChannel,
		TurboChannel,
		PCIBus,
		VMEBus,
		NuBus,
		PCMCIABus,
		CBus,
		MPIBus,
		MPSABus,
		ProcessorInternal,
		InternalPowerBus,
		PNPISABus,
		PNPBus,
		Vmcs,
		MaximumInterfaceType
	}

	public enum BUS_DATA_TYPE {
		ConfigurationSpaceUndefined = -1,
		Cmos,
		EisaConfiguration,
		Pos,
		CbusConfiguration,
		PCIConfiguration,
		VMEConfiguration,
		NuBusConfiguration,
		PCMCIAConfiguration,
		MPIConfiguration,
		MPSAConfiguration,
		PNPISAConfiguration,
		SgiInternalConfiguration,
		MaximumBusDataType
	}

	public enum DEBUG_DATA : uint {
		KPCR_OFFSET = 0,
		KPRCB_OFFSET = 1,
		KTHREAD_OFFSET = 2,
		BASE_TRANSLATION_VIRTUAL_OFFSET = 3,
		PROCESSOR_IDENTIFICATION = 4,
		PROCESSOR_SPEED = 5,
	}

	public enum RDD_DEBUG_DATA : uint {
		KernBase = 24,
		BreakpointWithStatusAddr = 32,
		SavedContextAddr = 40,
		KiCallUserModeAddr = 56,
		KeUserCallbackDispatcherAddr = 64,
		PsLoadedModuleListAddr = 72,
		PsActiveProcessHeadAddr = 80,
		PspCidTableAddr = 88,
		ExpSystemResourcesListAddr = 96,
		ExpPagedPoolDescriptorAddr = 104,
		ExpNumberOfPagedPoolsAddr = 112,
		KeTimeIncrementAddr = 120,
		KeBugCheckCallbackListHeadAddr = 128,
		KiBugcheckDataAddr = 136,
		IopErrorLogListHeadAddr = 144,
		ObpRootDirectoryObjectAddr = 152,
		ObpTypeObjectTypeAddr = 160,
		MmSystemCacheStartAddr = 168,
		MmSystemCacheEndAddr = 176,
		MmSystemCacheWsAddr = 184,
		MmPfnDatabaseAddr = 192,
		MmSystemPtesStartAddr = 200,
		MmSystemPtesEndAddr = 208,
		MmSubsectionBaseAddr = 216,
		MmNumberOfPagingFilesAddr = 224,
		MmLowestPhysicalPageAddr = 232,
		MmHighestPhysicalPageAddr = 240,
		MmNumberOfPhysicalPagesAddr = 248,
		MmMaximumNonPagedPoolInBytesAddr = 256,
		MmNonPagedSystemStartAddr = 264,
		MmNonPagedPoolStartAddr = 272,
		MmNonPagedPoolEndAddr = 280,
		MmPagedPoolStartAddr = 288,
		MmPagedPoolEndAddr = 296,
		MmPagedPoolInformationAddr = 304,
		MmPageSize = 312,
		MmSizeOfPagedPoolInBytesAddr = 320,
		MmTotalCommitLimitAddr = 328,
		MmTotalCommittedPagesAddr = 336,
		MmSharedCommitAddr = 344,
		MmDriverCommitAddr = 352,
		MmProcessCommitAddr = 360,
		MmPagedPoolCommitAddr = 368,
		MmExtendedCommitAddr = 376,
		MmZeroedPageListHeadAddr = 384,
		MmFreePageListHeadAddr = 392,
		MmStandbyPageListHeadAddr = 400,
		MmModifiedPageListHeadAddr = 408,
		MmModifiedNoWritePageListHeadAddr = 416,
		MmAvailablePagesAddr = 424,
		MmResidentAvailablePagesAddr = 432,
		PoolTrackTableAddr = 440,
		NonPagedPoolDescriptorAddr = 448,
		MmHighestUserAddressAddr = 456,
		MmSystemRangeStartAddr = 464,
		MmUserProbeAddressAddr = 472,
		KdPrintCircularBufferAddr = 480,
		KdPrintCircularBufferEndAddr = 488,
		KdPrintWritePointerAddr = 496,
		KdPrintRolloverCountAddr = 504,
		MmLoadedUserImageListAddr = 512,
		NtBuildLabAddr = 520,
		KiNormalSystemCall = 528,
		KiProcessorBlockAddr = 536,
		MmUnloadedDriversAddr = 544,
		MmLastUnloadedDriverAddr = 552,
		MmTriageActionTakenAddr = 560,
		MmSpecialPoolTagAddr = 568,
		KernelVerifierAddr = 576,
		MmVerifierDataAddr = 584,
		MmAllocatedNonPagedPoolAddr = 592,
		MmPeakCommitmentAddr = 600,
		MmTotalCommitLimitMaximumAddr = 608,
		CmNtCSDVersionAddr = 616,
		MmPhysicalMemoryBlockAddr = 624,
		MmSessionBase = 632,
		MmSessionSize = 640,
		MmSystemParentTablePage = 648,
		MmVirtualTranslationBase = 656,
		OffsetKThreadNextProcessor = 664,
		OffsetKThreadTeb = 666,
		OffsetKThreadKernelStack = 668,
		OffsetKThreadInitialStack = 670,
		OffsetKThreadApcProcess = 672,
		OffsetKThreadState = 674,
		OffsetKThreadBStore = 676,
		OffsetKThreadBStoreLimit = 678,
		SizeEProcess = 680,
		OffsetEprocessPeb = 682,
		OffsetEprocessParentCID = 684,
		OffsetEprocessDirectoryTableBase = 686,
		SizePrcb = 688,
		OffsetPrcbDpcRoutine = 690,
		OffsetPrcbCurrentThread = 692,
		OffsetPrcbMhz = 694,
		OffsetPrcbCpuType = 696,
		OffsetPrcbVendorString = 698,
		OffsetPrcbProcessorState = 700,
		OffsetPrcbNumber = 702,
		SizeEThread = 704,
		KdPrintCircularBufferPtrAddr = 712,
		KdPrintBufferSizeAddr = 720,
		MmBadPagesDetected = 800,
		EtwpDebuggerData = 816,
		PaeEnabled = 100000,
		SharedUserData = 100008,
		ProductType = 100016,
		SuiteMask = 100024,
		DumpWriterStatus = 100032,
		DumpFormatVersion = 100040,
		DumpWriterVersion = 100048,
		DumpPowerState = 100056,
		DumpMmStorage = 100064,
	}

	[Flags]
	public enum DEBUG_MODULE : uint {
		LOADED = 0,
		UNLOADED = 1,
		USER_MODE = 2,
		EXE_MODULE = 4,
		EXPLICIT = 8,
		SECONDARY = 0x10,
		SYNTHETIC = 0x20,
		SYM_BAD_CHECKSUM = 0x10000,
	}

	public enum DEBUG_SYMTYPE : uint {
		NONE = 0,
		COFF = 1,
		CODEVIEW = 2,
		PDB = 3,
		EXPORT = 4,
		DEFERRED = 5,
		SYM = 6,
		DIA = 7,
	}

	[Flags]
	public enum DEBUG_OUTTYPE {
		DEFAULT = 0,
		NO_INDENT = 1,
		NO_OFFSET = 2,
		VERBOSE = 4,
		COMPACT_OUTPUT = 8,
		ADDRESS_OF_FIELD = 0x10000,
		ADDRESS_ANT_END = 0x20000,
		BLOCK_RECURSE = 0x200000,
	}

	[Flags]
	public enum DEBUG_SCOPE_GROUP : uint {
		ARGUMENTS = 1,
		LOCALS = 2,
		ALL = 3,
	}

	[Flags]
	public enum DEBUG_FIND_SOURCE : uint {
		DEFAULT = 0,
		FULL_PATH = 1,
		BEST_MATCH = 2,
		NO_SRCSRV = 4,
		TOKEN_LOOKUP = 8,
	}

	[Flags]
	public enum MODULE_ORDERS : uint {
		MASK = 0xF0000000,
		LOADTIME = 0x10000000,
		MODULENAME = 0x20000000,
	}

	[Flags]
	public enum SYMOPT : uint {
		CASE_INSENSITIVE = 0x00000001,
		UNDNAME = 0x00000002,
		DEFERRED_LOADS = 0x00000004,
		NO_CPP = 0x00000008,
		LOAD_LINES = 0x00000010,
		OMAP_FIND_NEAREST = 0x00000020,
		LOAD_ANYTHING = 0x00000040,
		IGNORE_CVREC = 0x00000080,
		NO_UNQUALIFIED_LOADS = 0x00000100,
		FAIL_CRITICAL_ERRORS = 0x00000200,
		EXACT_SYMBOLS = 0x00000400,
		ALLOW_ABSOLUTE_SYMBOLS = 0x00000800,
		IGNORE_NT_SYMPATH = 0x00001000,
		INCLUDE_32BIT_MODULES = 0x00002000,
		PUBLICS_ONLY = 0x00004000,
		NO_PUBLICS = 0x00008000,
		AUTO_PUBLICS = 0x00010000,
		NO_IMAGE_SEARCH = 0x00020000,
		SECURE = 0x00040000,
		NO_PROMPTS = 0x00080000,
		OVERWRITE = 0x00100000,
		IGNORE_IMAGEDIR = 0x00200000,
		FLAT_DIRECTORY = 0x00400000,
		FAVOR_COMPRESSED = 0x00800000,
		ALLOW_ZERO_ADDRESS = 0x01000000,
		DISABLE_SYMSRV_AUTODETECT = 0x02000000,
		DEBUG = 0x80000000,
	}

	[Flags]
	public enum DEBUG_TYPEOPTS : uint {
		UNICODE_DISPLAY = 1,
		LONGSTATUS_DISPLAY = 2,
		FORCERADIX_OUTPUT = 4,
		MATCH_MAXSIZE = 8,
	}

	[Flags]
	public enum DEBUG_SYMBOL : uint {
		EXPANSION_LEVEL_MASK = 0xf,
		EXPANDED = 0x10,
		READ_ONLY = 0x20,
		IS_ARRAY = 0x40,
		IS_FLOAT = 0x80,
		IS_ARGUMENT = 0x100,
		IS_LOCAL = 0x200,
	}

	[Flags]
	public enum DEBUG_OUTPUT_SYMBOLS {
		DEFAULT = 0,
		NO_NAMES = 1,
		NO_OFFSETS = 2,
		NO_VALUES = 4,
		NO_TYPES = 0x10,
	}

	public enum DEBUG_INTERRUPT : uint {
		ACTIVE = 0,
		PASSIVE = 1,
		EXIT = 2,
	}

	[Flags]
	public enum DEBUG_CURRENT : uint {
		DEFAULT = 0xf,
		SYMBOL = 1,
		DISASM = 2,
		REGISTERS = 4,
		SOURCE_LINE = 8,
	}

	[Flags]
	public enum DEBUG_DISASM : uint {
		EFFECTIVE_ADDRESS = 1,
		MATCHING_SYMBOLS = 2,
		SOURCE_LINE_NUMBER = 4,
		SOURCE_FILE_NAME = 8,
	}

	[Flags]
	public enum DEBUG_STACK : uint {
		ARGUMENTS = 0x1,
		FUNCTION_INFO = 0x2,
		SOURCE_LINE = 0x4,
		FRAME_ADDRESSES = 0x8,
		COLUMN_NAMES = 0x10,
		NONVOLATILE_REGISTERS = 0x20,
		FRAME_NUMBERS = 0x40,
		PARAMETERS = 0x80,
		FRAME_ADDRESSES_RA_ONLY = 0x100,
		FRAME_MEMORY_USAGE = 0x200,
		PARAMETERS_NEWLINE = 0x400,
		DML = 0x800,
		FRAME_OFFSETS = 0x1000,
	}

	public enum IMAGE_FILE_MACHINE : uint {
		UNKNOWN = 0,
		I386 = 0x014c, // Intel 386.
		R3000 = 0x0162, // MIPS little-endian, 0x160 big-endian
		R4000 = 0x0166, // MIPS little-endian
		R10000 = 0x0168, // MIPS little-endian
		WCEMIPSV2 = 0x0169, // MIPS little-endian WCE v2
		ALPHA = 0x0184, // Alpha_AXP
		SH3 = 0x01a2, // SH3 little-endian
		SH3DSP = 0x01a3,
		SH3E = 0x01a4, // SH3E little-endian
		SH4 = 0x01a6, // SH4 little-endian
		SH5 = 0x01a8, // SH5
		ARM = 0x01c0, // ARM Little-Endian
		THUMB = 0x01c2,
		ARM2 = 0x01c4,
		AM33 = 0x01d3,
		POWERPC = 0x01F0, // IBM PowerPC Little-Endian
		POWERPCFP = 0x01f1,
		IA64 = 0x0200, // Intel 64
		MIPS16 = 0x0266, // MIPS
		ALPHA64 = 0x0284, // ALPHA64
		MIPSFPU = 0x0366, // MIPS
		MIPSFPU16 = 0x0466, // MIPS
		AXP64 = 0x0284,
		TRICORE = 0x0520, // Infineon
		CEF = 0x0CEF,
		EBC = 0x0EBC, // EFI Byte Code
		AMD64 = 0x8664, // AMD64 (K8)
		M32R = 0x9041, // M32R little-endian
		CEE = 0xC0EE,
	}

	public enum DEBUG_STATUS : uint {
		NO_CHANGE = 0,
		GO = 1,
		GO_HANDLED = 2,
		GO_NOT_HANDLED = 3,
		STEP_OVER = 4,
		STEP_INTO = 5,
		BREAK = 6,
		NO_DEBUGGEE = 7,
		STEP_BRANCH = 8,
		IGNORE_EVENT = 9,
		RESTART_REQUESTED = 10,
		REVERSE_GO = 11,
		REVERSE_STEP_BRANCH = 12,
		REVERSE_STEP_OVER = 13,
		REVERSE_STEP_INTO = 14,
		OUT_OF_SYNC = 15,
		WAIT_INPUT = 16,
		TIMEOUT = 17,
		MASK = 0x1f,
	}

	[Flags]
	public enum DEBUG_CES_EXECUTION_STATUS : ulong {
		INSIDE_WAIT = 0x100000000UL,
		WAIT_TIMEOUT = 0x200000000UL,
	}

	public enum DEBUG_LEVEL : uint {
		SOURCE = 0,
		ASSEMBLY = 1,
	}

	[Flags]
	public enum DEBUG_ENGOPT : uint {
		IGNORE_DBGHELP_VERSION = 0x00000001,
		IGNORE_EXTENSION_VERSIONS = 0x00000002,
		ALLOW_NETWORK_PATHS = 0x00000004,
		DISALLOW_NETWORK_PATHS = 0x00000008,
		NETWORK_PATHS = (0x00000004 | 0x00000008),
		IGNORE_LOADER_EXCEPTIONS = 0x00000010,
		INITIAL_BREAK = 0x00000020,
		INITIAL_MODULE_BREAK = 0x00000040,
		FINAL_BREAK = 0x00000080,
		NO_EXECUTE_REPEAT = 0x00000100,
		FAIL_INCOMPLETE_INFORMATION = 0x00000200,
		ALLOW_READ_ONLY_BREAKPOINTS = 0x00000400,
		SYNCHRONIZE_BREAKPOINTS = 0x00000800,
		DISALLOW_SHELL_COMMANDS = 0x00001000,
		KD_QUIET_MODE = 0x00002000,
		DISABLE_MANAGED_SUPPORT = 0x00004000,
		DISABLE_MODULE_SYMBOL_LOAD = 0x00008000,
		DISABLE_EXECUTION_COMMANDS = 0x00010000,
		DISALLOW_IMAGE_FILE_MAPPING = 0x00020000,
		PREFER_DML = 0x00040000,
		ALL = 0x0007FFFF,
	}

	public enum ERROR_LEVEL {
		ERROR = 1,
		MINORERROR = 2,
		WARNING = 3,
	}

	[Flags]
	public enum DEBUG_EXECUTE : uint {
		DEFAULT = 0,
		ECHO = 1,
		NOT_LOGGED = 2,
		NO_REPEAT = 4,
	}

	public enum DEBUG_FILTER : uint {
		CREATE_THREAD = 0x00000000,
		EXIT_THREAD = 0x00000001,
		CREATE_PROCESS = 0x00000002,
		EXIT_PROCESS = 0x00000003,
		LOAD_MODULE = 0x00000004,
		UNLOAD_MODULE = 0x00000005,
		SYSTEM_ERROR = 0x00000006,
		INITIAL_BREAKPOINT = 0x00000007,
		INITIAL_MODULE_LOAD = 0x00000008,
		DEBUGGEE_OUTPUT = 0x00000009,
		BREAK = 0x00000000,
		SECOND_CHANCE_BREAK = 0x00000001,
		OUTPUT = 0x00000002,
		IGNORE = 0x00000003,
		REMOVE = 0x00000004,
		GO_HANDLED = 0x00000000,
		GO_NOT_HANDLED = 0x00000001,
	}

	[Flags]
	public enum DEBUG_WAIT : uint {
		DEFAULT = 0,
	}

	public enum DEBUG_HANDLE_DATA_TYPE : uint {
		BASIC = 0,
		TYPE_NAME = 1,
		OBJECT_NAME = 2,
		HANDLE_COUNT = 3,
		TYPE_NAME_WIDE = 4,
		OBJECT_NAME_WIDE = 5,
		MINI_THREAD_1 = 6,
		MINI_MUTANT_1 = 7,
		MINI_MUTANT_2 = 8,
		PER_HANDLE_OPERATIONS = 9,
		ALL_HANDLE_OPERATIONS = 10,
		MINI_PROCESS_1 = 11,
		MINI_PROCESS_2 = 12,
	}

	public enum DEBUG_DATA_SPACE : uint {
		VIRTUAL = 0,
		PHYSICAL = 1,
		CONTROL = 2,
		IO = 3,
		MSR = 4,
		BUS_DATA = 5,
		DEBUGGER_DATA = 6,
	}

	public enum DEBUG_OFFSINFO : uint {
		VIRTUAL_SOURCE = 0x00000001,
	}

	public enum DEBUG_VSOURCE : uint {
		INVALID = 0,
		DEBUGGEE = 1,
		MAPPED_IMAGE = 2,
		DUMP_WITHOUT_MEMINFO = 3,
	}

	public enum DEBUG_VSEARCH : uint {
		DEFAULT = 0,
		WRITABLE_ONLY = 1,
	}

	public enum CODE_PAGE : uint {
		ACP = 0, // default to ANSI code page
		OEMCP = 1, // default to OEM  code page
		MACCP = 2, // default to MAC  code page
		THREAD_ACP = 3, // current thread's ANSI code page
		SYMBOL = 42, // SYMBOL translations

		UTF7 = 65000, // UTF-7 translation
		UTF8 = 65001, // UTF-8 translation
	}

	public enum DEBUG_PHYSICAL : uint {
		DEFAULT = 0,
		CACHED = 1,
		UNCACHED = 2,
		WRITE_COMBINED = 3,
	}

	[Flags]
	public enum DEBUG_OUTCBI : uint {
		EXPLICIT_FLUSH = 1,
		TEXT = 2,
		DML = 4,
		ANY_FORMAT = 6,
	}

	public enum DEBUG_OUTCB : uint {
		TEXT = 0,
		DML = 1,
		EXPLICIT_FLUSH = 2,
	}

	[Flags]
	public enum DEBUG_OUTCBF : uint {
		EXPLICIT_FLUSH = 1,
		DML_HAS_TAGS = 2,
		DML_HAS_SPECIAL_CHARACTERS = 4,
	}

	[Flags]
	public enum DEBUG_FORMAT : uint {
		DEFAULT = 0x00000000,
		CAB_SECONDARY_ALL_IMAGES = 0x10000000,
		WRITE_CAB = 0x20000000,
		CAB_SECONDARY_FILES = 0x40000000,
		NO_OVERWRITE = 0x80000000,

		USER_SMALL_FULL_MEMORY = 0x00000001,
		USER_SMALL_HANDLE_DATA = 0x00000002,
		USER_SMALL_UNLOADED_MODULES = 0x00000004,
		USER_SMALL_INDIRECT_MEMORY = 0x00000008,
		USER_SMALL_DATA_SEGMENTS = 0x00000010,
		USER_SMALL_FILTER_MEMORY = 0x00000020,
		USER_SMALL_FILTER_PATHS = 0x00000040,
		USER_SMALL_PROCESS_THREAD_DATA = 0x00000080,
		USER_SMALL_PRIVATE_READ_WRITE_MEMORY = 0x00000100,
		USER_SMALL_NO_OPTIONAL_DATA = 0x00000200,
		USER_SMALL_FULL_MEMORY_INFO = 0x00000400,
		USER_SMALL_THREAD_INFO = 0x00000800,
		USER_SMALL_CODE_SEGMENTS = 0x00001000,
		USER_SMALL_NO_AUXILIARY_STATE = 0x00002000,
		USER_SMALL_FULL_AUXILIARY_STATE = 0x00004000,
		USER_SMALL_IGNORE_INACCESSIBLE_MEM = 0x08000000,
	}

	public enum DEBUG_DUMP_FILE : uint {
		BASE = 0xffffffff,
		PAGE_FILE_DUMP = 0,
	}

	[Flags]
	public enum MEM : uint {
		COMMIT = 0x1000,
		RESERVE = 0x2000,
		DECOMMIT = 0x4000,
		RELEASE = 0x8000,
		FREE = 0x10000,
		PRIVATE = 0x20000,
		MAPPED = 0x40000,
		RESET = 0x80000,
		TOP_DOWN = 0x100000,
		WRITE_WATCH = 0x200000,
		PHYSICAL = 0x400000,
		ROTATE = 0x800000,
		LARGE_PAGES = 0x20000000,
		FOURMB_PAGES = 0x80000000,

		IMAGE = SEC.IMAGE,
	}

	[Flags]
	public enum PAGE : uint {
		NOACCESS = 0x01,
		READONLY = 0x02,
		READWRITE = 0x04,
		WRITECOPY = 0x08,
		EXECUTE = 0x10,
		EXECUTE_READ = 0x20,
		EXECUTE_READWRITE = 0x40,
		EXECUTE_WRITECOPY = 0x80,
		GUARD = 0x100,
		NOCACHE = 0x200,
		WRITECOMBINE = 0x400,
	}

	[Flags]
	public enum SEC : uint {
		FILE = 0x800000,
		IMAGE = 0x1000000,
		PROTECTED_IMAGE = 0x2000000,
		RESERVE = 0x4000000,
		COMMIT = 0x8000000,
		NOCACHE = 0x10000000,
		WRITECOMBINE = 0x40000000,
		LARGE_PAGES = 0x80000000,
		MEM_IMAGE = IMAGE,
	}

	public enum DEBUG_MODNAME : uint {
		IMAGE = 0x00000000,
		MODULE = 0x00000001,
		LOADED_IMAGE = 0x00000002,
		SYMBOL_FILE = 0x00000003,
		MAPPED_IMAGE = 0x00000004,
	}

	[Flags]
	public enum DEBUG_OUT_TEXT_REPL : uint {
		DEFAULT = 0,
	}

	[Flags]
	public enum DEBUG_ASMOPT : uint {
		DEFAULT = 0x00000000,
		VERBOSE = 0x00000001,
		NO_CODE_BYTES = 0x00000002,
		IGNORE_OUTPUT_WIDTH = 0x00000004,
		SOURCE_LINE_NUMBER = 0x00000008,
	}

	public enum DEBUG_EXPR : uint {
		MASM = 0,
		CPLUSPLUS = 1,
	}

	public enum DEBUG_EINDEX : uint {
		NAME = 0,
		FROM_START = 0,
		FROM_END = 1,
		FROM_CURRENT = 2,
	}

	[Flags]
	public enum DEBUG_LOG : uint {
		DEFAULT = 0,
		APPEND = 1,
		UNICODE = 2,
		DML = 4,
	}

	public enum DEBUG_SYSVERSTR : uint {
		SERVICE_PACK = 0,
		BUILD = 1,
	}

	[Flags]
	public enum DEBUG_MANAGED : uint {
		DISABLED = 0,
		ALLOWED = 1,
		DLL_LOADED = 2,
	}

	[Flags]
	public enum DEBUG_MANSTR : uint {
		NONE = 0,
		LOADED_SUPPORT_DLL = 1,
		LOAD_STATUS = 2,
	}

	[Flags]
	public enum DEBUG_MANRESET : uint {
		DEFAULT = 0,
		LOAD_DLL = 1,
	}

	[Flags]
	public enum VS_FF : uint {
		DEBUG = 0x00000001,
		PRERELEASE = 0x00000002,
		PATCHED = 0x00000004,
		PRIVATEBUILD = 0x00000008,
		INFOINFERRED = 0x00000010,
		SPECIALBUILD = 0x00000020,
	}

	public enum MODULE_ARCHITECTURE {
		UNKNOWN,
		I386,
		X64,
		IA64,
		ANY,
	}

	public enum IG : ushort {
		KD_CONTEXT = 1,
		READ_CONTROL_SPACE = 2,
		WRITE_CONTROL_SPACE = 3,
		READ_IO_SPACE = 4,
		WRITE_IO_SPACE = 5,
		READ_PHYSICAL = 6,
		WRITE_PHYSICAL = 7,
		READ_IO_SPACE_EX = 8,
		WRITE_IO_SPACE_EX = 9,
		KSTACK_HELP = 10, // obsolete
		SET_THREAD = 11,
		READ_MSR = 12,
		WRITE_MSR = 13,
		GET_DEBUGGER_DATA = 14,
		GET_KERNEL_VERSION = 15,
		RELOAD_SYMBOLS = 16,
		GET_SET_SYMPATH = 17,
		GET_EXCEPTION_RECORD = 18,
		IS_PTR64 = 19,
		GET_BUS_DATA = 20,
		SET_BUS_DATA = 21,
		DUMP_SYMBOL_INFO = 22,
		LOWMEM_CHECK = 23,
		SEARCH_MEMORY = 24,
		GET_CURRENT_THREAD = 25,
		GET_CURRENT_PROCESS = 26,
		GET_TYPE_SIZE = 27,
		GET_CURRENT_PROCESS_HANDLE = 28,
		GET_INPUT_LINE = 29,
		GET_EXPRESSION_EX = 30,
		TRANSLATE_VIRTUAL_TO_PHYSICAL = 31,
		GET_CACHE_SIZE = 32,
		READ_PHYSICAL_WITH_FLAGS = 33,
		WRITE_PHYSICAL_WITH_FLAGS = 34,
		POINTER_SEARCH_PHYSICAL = 35,
		OBSOLETE_PLACEHOLDER_36 = 36,
		GET_THREAD_OS_INFO = 37,
		GET_CLR_DATA_INTERFACE = 38,
		MATCH_PATTERN_A = 39,
		FIND_FILE = 40,
		TYPED_DATA_OBSOLETE = 41,
		QUERY_TARGET_INTERFACE = 42,
		TYPED_DATA = 43,
		DISASSEMBLE_BUFFER = 44,
		GET_ANY_MODULE_IN_RANGE = 45,
		VIRTUAL_TO_PHYSICAL = 46,
		PHYSICAL_TO_VIRTUAL = 47,
		GET_CONTEXT_EX = 48,
		GET_TEB_ADDRESS = 128,
		GET_PEB_ADDRESS = 129,
	}

	[Flags]
	public enum EFileAccess : uint {
		None = 0x00000000,
		GenericRead = 0x80000000,
		GenericWrite = 0x40000000,
		GenericExecute = 0x20000000,
		GenericAll = 0x10000000
	}

	[Flags]
	public enum EFileShare : uint {
		None = 0x00000000,
		Read = 0x00000001,
		Write = 0x00000002,
		Delete = 0x00000004
	}

	public enum ECreationDisposition : uint {
		/// <summary>
		///     Creates a new file. The function fails if a specified file exists.
		/// </summary>
		New = 1,

		/// <summary>
		///     Creates a new file, always.
		///     If a file exists, the function overwrites the file, clears the existing attributes, combines the specified file
		///     attributes,
		///     and flags with FILE_ATTRIBUTE_ARCHIVE, but does not set the security descriptor that the SECURITY_ATTRIBUTES
		///     structure specifies.
		/// </summary>
		CreateAlways = 2,

		/// <summary>
		///     Opens a file. The function fails if the file does not exist.
		/// </summary>
		OpenExisting = 3,

		/// <summary>
		///     Opens a file, always.
		///     If a file does not exist, the function creates a file as if dwCreationDisposition is CREATE_NEW.
		/// </summary>
		OpenAlways = 4,

		/// <summary>
		///     Opens a file and truncates it so that its size is 0 (zero) bytes. The function fails if the file does not exist.
		///     The calling process must open the file with the GENERIC_WRITE access right.
		/// </summary>
		TruncateExisting = 5
	}

	[Flags]
	public enum EFileAttributes : uint {
		Readonly = 0x00000001,
		Hidden = 0x00000002,
		System = 0x00000004,
		Directory = 0x00000010,
		Archive = 0x00000020,
		Device = 0x00000040,
		Normal = 0x00000080,
		Temporary = 0x00000100,
		SparseFile = 0x00000200,
		ReparsePoint = 0x00000400,
		Compressed = 0x00000800,
		Offline = 0x00001000,
		NotContentIndexed = 0x00002000,
		Encrypted = 0x00004000,
		Write_Through = 0x80000000,
		Overlapped = 0x40000000,
		NoBuffering = 0x20000000,
		RandomAccess = 0x10000000,
		SequentialScan = 0x08000000,
		DeleteOnClose = 0x04000000,
		BackupSemantics = 0x02000000,
		PosixSemantics = 0x01000000,
		OpenReparsePoint = 0x00200000,
		OpenNoRecall = 0x00100000,
		FirstPipeInstance = 0x00080000
	}

	public enum SPF_MOVE_METHOD : uint {
		FILE_BEGIN = 0,
		FILE_CURRENT = 1,
		FILE_END = 2,
	}

	[Flags]
	public enum DEBUG_GETMOD : uint {
		DEFAULT = 0,
		NO_LOADED_MODULES = 1,
		NO_UNLOADED_MODULES = 2,
	}

	[Flags]
	public enum DEBUG_ADDSYNTHMOD : uint {
		DEFAULT = 0,
	}

	[Flags]
	public enum DEBUG_ADDSYNTHSYM : uint {
		DEFAULT = 0,
	}

	[Flags]
	public enum DEBUG_OUTSYM : uint {
		DEFAULT = 0,
		FORCE_OFFSET = 1,
		SOURCE_LINE = 2,
		ALLOW_DISPLACEMENT = 4,
	}

	[Flags]
	public enum DEBUG_GETFNENT : uint {
		DEFAULT = 0,
		RAW_ENTRY_ONLY = 1,
	}

	[Flags]
	public enum DEBUG_SOURCE : uint {
		IS_STATEMENT = 1,
	}

	[Flags]
	public enum DEBUG_GSEL : uint {
		DEFAULT = 0,
		NO_SYMBOL_LOADS = 1,
		ALLOW_LOWER = 2,
		ALLOW_HIGHER = 4,
		NEAREST_ONLY = 8,
		INLINE_CALLSITE = 0x10,
	}

	[Flags]
	public enum DEBUG_FRAME : uint {
		DEFAULT = 0,
		IGNORE_INLINE = 1,
	}

	public enum DEBUG_REGSRC : uint {
		DEBUGGEE = 0,
		EXPLICIT = 1,
		FRAME = 2,
	}

	public enum _EXT_TDOP {
		EXT_TDOP_COPY,
		EXT_TDOP_RELEASE,
		EXT_TDOP_SET_FROM_EXPR,
		EXT_TDOP_SET_FROM_U64_EXPR,
		EXT_TDOP_GET_FIELD,
		EXT_TDOP_EVALUATE,
		EXT_TDOP_GET_TYPE_NAME,
		EXT_TDOP_OUTPUT_TYPE_NAME,
		EXT_TDOP_OUTPUT_SIMPLE_VALUE,
		EXT_TDOP_OUTPUT_FULL_VALUE,
		EXT_TDOP_HAS_FIELD,
		EXT_TDOP_GET_FIELD_OFFSET,
		EXT_TDOP_GET_ARRAY_ELEMENT,
		EXT_TDOP_GET_DEREFERENCE,
		EXT_TDOP_GET_TYPE_SIZE,
		EXT_TDOP_OUTPUT_TYPE_DEFINITION,
		EXT_TDOP_GET_POINTER_TO,
		EXT_TDOP_SET_FROM_TYPE_ID_AND_U64,
		EXT_TDOP_SET_PTR_FROM_TYPE_ID_AND_U64,
		EXT_TDOP_COUNT
	}

	[Flags]
	public enum FORMAT_MESSAGE {
		ALLOCATE_BUFFER = 0x0100,
		IGNORE_INSERTS = 0x0200,
		FROM_STRING = 0x0400,
		FROM_HMODULE = 0x0800,
		FROM_SYSTEM = 0x1000,
		ARGUMENT_ARRAY = 0x2000,
	}

	public enum MINIDUMP_STREAM_TYPE : uint {
		UnusedStream = 0,
		ReservedStream0 = 1,
		ReservedStream1 = 2,
		ThreadListStream = 3,
		ModuleListStream = 4,
		MemoryListStream = 5,
		ExceptionStream = 6,
		SystemInfoStream = 7,
		ThreadExListStream = 8,
		Memory64ListStream = 9,
		CommentStreamA = 10,
		CommentStreamW = 11,
		HandleDataStream = 12,
		FunctionTableStream = 13,
		UnloadedModuleListStream = 14,
		MiscInfoStream = 15,
		MemoryInfoListStream = 16,
		ThreadInfoListStream = 17,
		HandleOperationListStream = 18,
		TokenStream = 19,

		ceStreamNull = 0x8000,
		ceStreamSystemInfo = 0x8001,
		ceStreamException = 0x8002,
		ceStreamModuleList = 0x8003,
		ceStreamProcessList = 0x8004,
		ceStreamThreadList = 0x8005,
		ceStreamThreadContextList = 0x8006,
		ceStreamThreadCallStackList = 0x8007,
		ceStreamMemoryVirtualList = 0x8008,
		ceStreamMemoryPhysicalList = 0x8009,
		ceStreamBucketParameters = 0x800A,

		LastReservedStream = 0xffff
	}
}